#pragma once

extern int BlockSize;

class Block
{
public:
	enum T_TYPE
	{
		NONE = 0,
		WHITE,
		BLUE,
		GREEN,
		RED,
		ORANGE,
		YELLOW,
		PURPLE,

		// Keep this as last type.
		MAX
	};

	Block( int a_Index, T_TYPE a_Type = NONE, int a_GroupID = 0 );
	~Block();

	T_TYPE GetType();
	void SetType( T_TYPE a_Type );

	bool IsStatic();
	void SetStatic( bool a_Static );

	int GetGroupID();
	void SetGroupID( int a_GroupID );

	bool HasMoved();
	void SetHasMoved( bool a_HasMoved );

	void SetIndex( int a_Index );
	int GetIndex();
private:
	//Block() {}	// Private default c-tor.

	T_TYPE m_Type;
	bool m_Static;
	bool m_HasMoved;
	int m_GroupID;	// Used to group objects together while they are falling and to make structures of blocks stop falling entirely when even one of the blocks collides.
	int m_Index;
};